package cn.fanyamin.dao.ibatis;


import java.util.HashMap;
import java.util.Map;

import cn.fanyamin.dao.RoleDao;
import cn.fanyamin.domain.Module;
import cn.fanyamin.domain.Role;



public class SqlMapRoleDao extends CRUDDao<Integer,Role> implements RoleDao {
	protected String domainName = "Role";
	//private SqlMapModuleDao moduleDao = new SqlMapModuleDao();
	
	public SqlMapRoleDao() {
		setSQLID(domainName);
	}
	
	public Integer create(Role role) {
		for(Module m: role.getModuleList()) {
			createPrivilege(m.getModuleID(),role.getRoleID());
		}
		return (Integer) getSqlMapClientTemplate().insert(CREATE_SQLID, role);
	}
	
	public int update(Role role) {
		for(Module m: role.getModuleList()) {
			deletePrivilege(m.getModuleID(),role.getRoleID());
			createPrivilege(m.getModuleID(),role.getRoleID());
		}
		return getSqlMapClientTemplate().update(UPDATE_SQLID, role);
	}

	public Integer createPrivilege(int moduleID, int roleID) {
		Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("moduleID", moduleID);
        map.put("roleID", roleID);
        Integer ret = (Integer) getSqlMapClientTemplate().insert("createPrivilege", map);

		return ret;
	}

	public int deletePrivilege(int moduleID, int roleID) {
		Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("moduleID", moduleID);
        map.put("roleID", roleID);
        return getSqlMapClientTemplate().delete("deletePrivilege", map);

	}

}
